package DataStructureAndAlgorithm.Tedukuri.递推与递归;
import java.util.Scanner;
//递归实现指数型枚举
public class AcWing_92 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        //用二进制数保存方案，每个位上是1表示选，0表示不选
        dfs(0,0,n);
    }
    static void dfs(int u,int state,int n){
        //判断是否到最后一个数了
        if (u == n){
            for (int i = 0; i < n; i++){
                if ((state >> i & 1) == 1){
                    System.out.print((i + 1) + " ");
                }
            }
            System.out.println();
            return ;
        }
        //不选第i个数的情况
        dfs(u + 1, state, n);
        //选第i个数的情况
        dfs(u + 1, state + (1 << u), n);
    }
}

/*
从 1∼n 这 n

个整数中随机选取任意多个，输出所有可能的选择方案。
输入格式

输入一个整数 n

。
输出格式

每行输出一种方案。

同一行内的数必须升序排列，相邻两个数用恰好 1

个空格隔开。

对于没有选任何数的方案，输出空行。

本题有自定义校验器（SPJ），各行（不同方案）之间的顺序任意。
数据范围

1≤n≤15

输入样例：

3

输出样例：


3
2
2 3
1
1 3
1 2
1 2 3

 */